/*  
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package fr.uniscol.dao.impl;

import fr.uniscol.dao.IServiceEnseignantDao;
import fr.uniscol.dao.UniscolDaoSupport;

import static fr.uniscol.dao.impl.SQLNames.*;
import fr.uniscol.dao.mapper.GroupeRowMapper;
import fr.uniscol.dao.mapper.ServiceEnseignantRowMapper;
import fr.uniscol.model.Groupe;
import fr.uniscol.model.ServiceEnseignant;
import java.util.List;
import org.springframework.stereotype.Repository;

/**
 *
 * @author Christophe
 */
@Repository("serviceEnseignantDao")
public class ServiceEnseignantDaoImpl extends UniscolDaoSupport implements IServiceEnseignantDao {

    @Override
    public long saveServiceEnseignant(ServiceEnseignant service) {
        
        long serviceId = 0;
        
        if(service.getId() == 0){
            getJdbcTemplate().update("INSERT INTO " + TABLE_SERVICE_ENSEIGNANT + " (baseid, enseignantid, matiereid, structureid, heures) VALUES(?, ?, ?, ?, ?)", new Object[]{
               service.getEnseignant().getBase().getId(),
               service.getEnseignant().getId(),
               service.getMatiere().getId(),
               service.getGroupe().getId(),
               service.getNbrHeures()
            });
            
            serviceId = getJdbcTemplate().queryForObject("SELECT LAST_INSERT_ID()", Long.class);
            
        }else{
            
            getJdbcTemplate().update("UPDATE " + TABLE_SERVICE_ENSEIGNANT + " SET enseignantid=?, matiereid=?, structureid=?, heures=? WHERE serviceid=? ", new Object[]{
                service.getEnseignant().getId(),
                service.getMatiere().getId(),
                service.getGroupe().getId(),
                service.getNbrHeures(),
                service.getId()
            });
            
            serviceId = service.getId();
        }
        
        return serviceId;
    }

    @Override
    public List<ServiceEnseignant> getServicesOfGroupe(Groupe groupe) {
        
        List<ServiceEnseignant> services = getJdbcTemplate().query("SELECT s.*, cl.libelle libelle_structure, m.libelle_long libelle_matiere " +
                                                                   "FROM " + TABLE_SERVICE_ENSEIGNANT + " s, " + TABLE_MATIERE + " m, " + TABLE_STRUCTURE + " cl " +
                                                                   "WHERE s.structureid=cl.structureid " +
                                                                   "AND s.matiereid=m.matiereid "
                                                                    + "AND s.structureid=? ", new Object[]{
           groupe.getId()
        }, new ServiceEnseignantRowMapper());
        
        return services;
    }
}
